<?php
/**
 * 类名
 * @Author   Wcj
 * @DateTime 2018/11/29 13:40
 */

/**
 * 打印输出数据
 * @Author   Wcj
 * @DateTime 2018/11/29 13:40
 * @param $var
 */
function dd($var)
{
    if (is_bool($var)) {
        var_dump($var);
    } else if (is_null($var)) {
        var_dump(NULL);
    } else {
        echo "<pre style='padding:10px;border-radius:5px;background:#F5F5F5;border:1px solid #aaa;font-size:14px;line-height:18px;'>" . print_r($var, true) . "</pre>";
    }

    exit;
}

/**
 * 提示方法
 * @Author   Wcj
 * @DateTime 2018/11/29 13:40
 */
function notice($msg = '', $url = '', $jumpTime = 5)
{
    include_once 'notice.php';
    exit;
}

/**
 * 客户端操作系统信息
 * @Author   Wcj
 * @DateTime 2018/11/29 14:01
 * @return string
 */
function getOs()
{
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);

    if (preg_match('/win/i', $agent) && strpos($agent, '95')) {
        $os = 'Windows-95';
    } else if (preg_match('/win 9x/', $agent) && strpos($agent, '4.90')) {
        $os = 'Windows-ME';
    } else if (preg_match('/win/', $agent) && preg_match('/98/i', $agent)) {
        $os = 'Windows-98';
    } else if (preg_match('/win/', $agent) && preg_match('/nt 6.0/i', $agent)) {
        $os = 'Windows-Vista';
    } else if (preg_match('/win/', $agent) && preg_match('/nt 6.1/i', $agent)) {
        $os = 'Windows-7';
    } else if (preg_match('/win/', $agent) && preg_match('/nt 6.2/i', $agent)) {
        $os = 'Windows-8';
    } else if (preg_match('/win/', $agent) && preg_match('/nt 10.0/i', $agent)) {
        $os = 'Windows-10';#添加win10判断
    } else if (preg_match('/win/', $agent) && preg_match('/nt 5.1/i', $agent)) {
        $os = 'Windows-XP';
    } else if (preg_match('/win/', $agent) && preg_match('/nt 5/i', $agent)) {
        $os = 'Windows-2000';
    } else if (preg_match('/win/', $agent) && preg_match('/nt/i', $agent)) {
        $os = 'Windows-NT';
    } else if (preg_match('/win/', $agent) && preg_match('/32/i', $agent)) {
        $os = 'Windows-32';
    } else if (preg_match('/linux/', $agent)) {
        $os = 'Linux';
    } else if (preg_match('/unix/', $agent)) {
        $os = 'Unix';
    } else if (preg_match('/sun/', $agent) && preg_match('/os/i', $agent)) {
        $os = 'SunOS';
    } else if (preg_match('/ibm/', $agent) && preg_match('/os/i', $agent)) {
        $os = 'IBM-OS/2';
    } else if (preg_match('/Mac/', $agent) && preg_match('/PC/i', $agent)) {
        $os = 'Macintosh';
    } else if (preg_match('/PowerPC/', $agent)) {
        $os = 'PowerPC';
    } else if (preg_match('/AIX/', $agent)) {
        $os = 'AIX';
    } else if (preg_match('/HPUX/', $agent)) {
        $os = 'HPUX';
    } else if (preg_match('/NetBSD/', $agent)) {
        $os = 'NetBSD';
    } else if (preg_match('/BSD/', $agent)) {
        $os = 'BSD';
    } else if (preg_match('/OSF1/', $agent)) {
        $os = 'OSF1';
    } else if (preg_match('/IRIX/', $agent)) {
        $os = 'IRIX';
    } else if (preg_match('/FreeBSD/', $agent)) {
        $os = 'FreeBSD';
    } else if (preg_match('/teleport/', $agent)) {
        $os = 'teleport';
    } else if (preg_match('/flashget/', $agent)) {
        $os = 'flashget';
    } else if (preg_match('/webzip/', $agent)) {
        $os = 'webzip';
    } else if (preg_match('/offline/', $agent)) {
        $os = 'offline';
    } elseif (strpos($agent, 'macintosh')) {
        $os = 'mac';
    } elseif (strpos($agent, 'ipod')) {
        $os = 'ipod';
    } elseif (strpos($agent, 'ipad')) {
        $os = 'ipad';
    } elseif (strpos($agent, 'iphone')) {
        $os = 'iphone';
    } elseif (strpos($agent, 'android')) {
        $os = 'android';
    } elseif (strpos($agent, 'unix')) {
        $os = 'unix';
    } elseif (strpos($agent, 'linux')) {
        $os = 'linux';
    } else {
        $os = '未知操作系统';
    }

    return $os;
}

/**
 * 获取IP地址
 * @Author   Wcj
 * @DateTime 2018/11/29 14:40
 * @return array|false|string
 */
function getIp()
{
    static $realip;
    if (isset($_SERVER)) {
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $realip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")) {
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }
    return $realip;
}

/**
 * 根据ip获得访客所在地信息
 * @Author   Wcj
 * @DateTime 2018/11/29 15:13
 * @param string $ip
 * @return mixed
 */
function getAddress($ip = '')
{
    if (empty($ip)) $ip = getIp();

    $url = "http://ip.taobao.com/service/getIpInfo.php?ip=" . $ip;// 淘宝接口
    $ipInfo = json_decode(file_get_contents($url), true);

    return $ipInfo['data'];
}

/**
 * 获取唯一数字
 * @Author   Wcj
 * @DateTime 2018/11/29 17:39
 * @return string
 */
function get_unique_num()
{
    // 截取当前微秒数的后6位
    $num = substr(uniqid(), 7, 13);
    // 将截取的微秒数分割为数组
    $numArr = str_split($num);
    // 用ord获取ASCII码，避免字母的出现
    $numArr = array_map('ord', $numArr);
    // 组合为字符串 规范长度
    $str = substr(implode('', $numArr), 0, 8);
    // 生成随机数
    $rand = '';
    for ($i = 0; $i < 5; $i++) {
        $rand .= mt_rand(0, 9);
    }
    // 组合订单号
    return date('Y') . $str . $rand;
}

/**
 * 分页方法
 * @Author   Wcj
 * @DateTime 2018/12/4 14:00
 * @param $total
 * @param $page
 * @param int $size
 * @return array
 */
function page($total, $page, $size = 3)
{
    // 验证
    if (!is_numeric($page)) notice('参数 page 格式错误');

    $totalPage = ceil($total / $size);// 总页数
    if ($page > $totalPage) $page = $totalPage;// 分页合理化

    $start = (($page - 1) * $size);// 起始下标
    $end = ($page * $size) - 1;// 结束下标

    return compact('totalPage', 'start', 'end', 'page');
}